/*
//   Copyright 2008 Dear Soft(http://dear-soft.com)
//
//   Licensed under the Apache License, Version 2.0 (the "License");
//   you may not use this file except in compliance with the License.
//   You may obtain a copy of the License at
//
//       http://www.apache.org/licenses/LICENSE-2.0
//
//   Unless required by applicable law or agreed to in writing, software
//   distributed under the License is distributed on an "AS IS" BASIS,
//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//   See the License for the specific language governing permissions and
//   limitations under the License.
 */

package com.dear.soft.components.properties.renderers;

import java.awt.Color;
import java.awt.Component;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;

import com.dear.soft.components.properties.Category.CategoryExpander;
import com.dear.soft.components.util.ImageUtil;

public class ExpanderCellRenderer extends DefaultTableCellRenderer {
	private static final long serialVersionUID = 1L;
	private static final Color BG = new Color(234, 234, 234);
	private static final Icon expanded = new ImageIcon(
			ImageUtil.class
					.getResource("/com/dear/soft/components/properties/res/collapse.png"));
	private static final Icon collapsed = new ImageIcon(ImageUtil.class
			.getResource("/com/dear/soft/components/properties/res/expand.png"));

	@Override
	public Component getTableCellRendererComponent(JTable table, Object value,
			boolean isSelected, boolean hasFocus, int row, int column) {
		Component c = super.getTableCellRendererComponent(table, value, false,
				false, row, column);
		if (c instanceof JLabel) {
			JLabel label = (JLabel) c;
			setValue("");
			setIcon(null);
			label.setBackground(BG);
			if (value instanceof CategoryExpander) {
				CategoryExpander expander = (CategoryExpander) value;
				if (expander.ref.isExpanded()) {
					setIcon(expanded);
				} else {
					setIcon(collapsed);
				}
			}
		}
		return c;
	}

}
